El “Potenciar Trabajo” en datos. Miradas
relacionales entre concepciones y números para comprender su
constitución
Cynthia
Ferrari Mango y Ariana Bardauil
2024-11-18
Resultados
Perfil de los y las titulares del programa
Género y sexo
Total pais
## [1] "61.17 %" "38.51 %" "0.18 %" "0.07 %" "0.05 %" "0.03 %" "100 %"
| Tabla 2: Distribución del Género en Argentina |
| Datos de género y frecuencia |
| Género |
Cantidad |
Porcentaje |
| Mujer |
970,555 |
61.17 % |
| Varón |
611,010 |
38.51 % |
| Feminidad trans/travesti |
2,867 |
0.18 % |
| Masculinidad trans |
1,086 |
0.07 % |
| No Binarie |
721 |
0.05 % |
| Otro |
437 |
0.03 % |
| Total |
1,586,676 |
100 % |
## [1] "5111 corresponden a disidencias. Es decir, el 0.32 %"
Provincia de buenos aires
Distribución del género en PBA
## [1] "60.93 %" "38.86 %" "0.1 %" "0.04 %" "0.04 %" "0.03 %" "100 %"
| Tabla 3: Distribución del Género en Buenos Aires |
| Datos de género y frecuencia |
| Género |
Cantidad |
Porcentaje |
| Mujer |
488,894 |
60.93 % |
| Varón |
311,834 |
38.86 % |
| Feminidad trans/travesti |
835 |
0.1 % |
| Masculinidad trans |
360 |
0.04 % |
| No Binarie |
295 |
0.04 % |
| Otro |
221 |
0.03 % |
| Total |
802,439 |
100 % |
Pirámide demográfica
Provincia de buenos aires
Titulares por provincia
## [1] "50.57 %" "5.05 %" "4.55 %" "3.8 %" "3.75 %" "3.71 %" "3.66 %"
## [8] "3.51 %" "3.46 %" "2.55 %" "2.06 %" "1.99 %" "1.97 %" "1.53 %"
## [15] "1.34 %" "1.24 %" "1.07 %" "0.92 %" "0.85 %" "0.8 %" "0.6 %"
## [22] "0.55 %" "0.29 %" "0.19 %" "100 %"
| Distribución por Provincia |
| Cantidad y Porcentaje de titulares |
| Provincia |
Cantidad |
Porcentaje |
| Buenos Aires |
802,380 |
50.57 % |
| Tucumán |
80,126 |
5.05 % |
| Ciudad de Buenos Aires |
72,152 |
4.55 % |
| Jujuy |
60,231 |
3.8 % |
| Salta |
59,494 |
3.75 % |
| Santa Fe |
58,883 |
3.71 % |
| Chaco |
58,009 |
3.66 % |
| Córdoba |
55,716 |
3.51 % |
| Misiones |
54,848 |
3.46 % |
| Santiago del Estero |
40,398 |
2.55 % |
| Entre Ríos |
32,752 |
2.06 % |
| Mendoza |
31,513 |
1.99 % |
| Corrientes |
31,307 |
1.97 % |
| San Juan |
24,293 |
1.53 % |
| Formosa |
21,210 |
1.34 % |
| Neuquén |
19,610 |
1.24 % |
| Río Negro |
16,970 |
1.07 % |
| La Rioja |
14,644 |
0.92 % |
| Catamarca |
13,542 |
0.85 % |
| Chubut |
12,681 |
0.8 % |
| San Luis |
9,481 |
0.6 % |
| Santa Cruz |
8,738 |
0.55 % |
| La Pampa |
4,601 |
0.29 % |
| Tierra del Fuego |
3,035 |
0.19 % |
| Total |
1,586,614 |
100 % |
Evolución de los titulares / permanencia en el programa
Distribución geográfica
| Tabla 4: Porcentaje de titulares por provincia y año |
| Sobre el total de titulares |
| Provincias |
Titulares 2020 |
Titulares 2021 |
Titulares 2022 |
Porcentaje 2020 |
Porcentaje 2021 |
Porcentaje 2022 |
| Ciudad Autónoma de Buenos Aires |
36986 |
63105 |
64817 |
4.74% |
4.62% |
4.4% |
| Buenos Aires |
425489 |
700762 |
739912 |
54.5% |
51.36% |
50.17% |
| Catamarca |
5594 |
11652 |
12788 |
0.72% |
0.85% |
0.87% |
| Córdoba |
22680 |
46439 |
51562 |
2.91% |
3.4% |
3.5% |
| Corrientes |
15386 |
25595 |
29437 |
1.97% |
1.88% |
2% |
| Chaco |
26440 |
49599 |
55307 |
3.39% |
3.64% |
3.75% |
| Chubut |
4606 |
10172 |
11230 |
0.59% |
0.75% |
0.76% |
| Entre Ríos |
12207 |
26690 |
30759 |
1.56% |
1.96% |
2.09% |
| Formosa |
8986 |
17460 |
20447 |
1.15% |
1.28% |
1.39% |
| Jujuy |
27986 |
51057 |
56480 |
3.58% |
3.74% |
3.83% |
| La Pampa |
2079 |
3804 |
3975 |
0.27% |
0.28% |
0.27% |
| La Rioja |
6470 |
12518 |
13814 |
0.83% |
0.92% |
0.94% |
| Mendoza |
13150 |
26178 |
29658 |
1.68% |
1.92% |
2.01% |
| Misiones |
23115 |
45955 |
51982 |
2.96% |
3.37% |
3.52% |
| Neuquén |
7578 |
15938 |
17719 |
0.97% |
1.17% |
1.2% |
| Río Negro |
7909 |
14749 |
15241 |
1.01% |
1.08% |
1.03% |
| Salta |
27414 |
50718 |
56588 |
3.51% |
3.72% |
3.84% |
| San Juan |
11620 |
21305 |
22890 |
1.49% |
1.56% |
1.55% |
| San Luis |
4540 |
7868 |
8793 |
0.58% |
0.58% |
0.6% |
| Santa Cruz |
2618 |
7917 |
7835 |
0.34% |
0.58% |
0.53% |
| Santa Fe |
20495 |
46041 |
54784 |
2.63% |
3.37% |
3.71% |
| Santiago del Estero |
18670 |
34547 |
39144 |
2.39% |
2.53% |
2.65% |
| Tucumán |
47670 |
72016 |
76991 |
6.11% |
5.28% |
5.22% |
| Tierra del Fuego, Antártida e Islas del Atlántico Sur |
1034 |
2394 |
2598 |
0.13% |
0.18% |
0.18% |
| Total |
780722 |
1364479 |
1474751 |
100% |
100% |
100% |
Mapa en función del % poblacional
Argentina
| Tabla 5: Porcentaje de titulares por año |
| En base a proyecciones poblacionales de INDEC |
| Año |
Titulares |
Poblacion |
Porcentaje |
| 2020 |
780722 |
45376763 |
1.7% |
| 2022 |
1474751 |
46234830 |
3.2% |
Buenos Aires
| Tabla 6: Porcentaje de titulares por año en Buenos Aires |
| En base a proyecciones poblacionales de INDEC |
| Año |
Titulares |
Poblacion |
Porcentaje |
| 2020 |
425489 |
17541141 |
2.4% |
| 2022 |
739912 |
17875743 |
4.1% |
Montos
| Montos por año |
| Primer período de cada año |
| Año |
Primer periodo |
Primer monto |
Monto en precios reales |
| 2020 |
mar. 2020 |
8500 |
2781.86 |
| 2021 |
ene. 2021 |
10293 |
2563.59 |
| 2022 |
ene. 2022 |
16000 |
2644.49 |
| 2023 |
ene. 2023 |
32714 |
2719.42 |
LS0tDQp0aXRsZTogIkVsIOKAnFBvdGVuY2lhciBUcmFiYWpv4oCdIGVuIGRhdG9zLiBNaXJhZGFzIHJlbGFjaW9uYWxlcyBlbnRyZSBjb25jZXBjaW9uZXMgeSBuw7ptZXJvcyBwYXJhIGNvbXByZW5kZXIgc3UgY29uc3RpdHVjacOzbiINCmF1dGhvcjogICJDeW50aGlhIEZlcnJhcmkgTWFuZ28geSBBcmlhbmEgQmFyZGF1aWwiDQpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiDQpsYW5nOiAiZXMiDQpvdXRwdXQ6DQogIHJtZGZvcm1hdHM6OmRvd25jdXRlOg0KICAgIGxpZ2h0Ym94OiBUUlVFDQogICAgaGlnaGxpZ2h0OiB0YW5nbw0KICAgIHRvYzogMw0KICAgIG51bWJlci1zZWN0aW9uczogVFJVRQ0KICAgIGNvZGUtZm9sZGluZzogaGlkZQ0KICAgIGNvZGVfZG93bmxvYWQ6IFRSVUUNCmVkaXRvcl9vcHRpb25zOiANCiAgbWFya2Rvd246IA0KICAgIHdyYXA6IDcyDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQod2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgZWNobyA9IEZBTFNFKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGphbml0b3IpDQpsaWJyYXJ5KHdhZmZsZSkNCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeShzZikNCmxpYnJhcnkoc3RyaW5ncikNCmxpYnJhcnkobHVicmlkYXRlKQ0KbGlicmFyeShnZW9BcikNCmxpYnJhcnkoZ2dyZXBlbCkNCmxpYnJhcnkoZ3QpDQpsaWJyYXJ5KHNjYWxlcykNCmxpYnJhcnkocmVhZHhsKQ0KDQpvcHRpb25zKHNjaXBlbj05OTkpDQpgYGANCg0KIyBSZXN1bHRhZG9zDQoNCiMjIFBlcmZpbCBkZSBsb3MgeSBsYXMgdGl0dWxhcmVzIGRlbCBwcm9ncmFtYQ0KDQojIyMgR8OpbmVybyB5IHNleG8gey50YWJzZXR9DQoNCiMjIyMgVG90YWwgcGFpcw0KYGBge3J9DQoNCiN0aXR1bGFyZXMgc2UgcHVlZGVuIHNhY2FyIGRhdG9zIGRlbCBwZXJmaWwgZGUgbGEgcGVyc29uYSAoc2V4bywgZWRhZCB5IG11bmljaXBpbykNCg0KdGl0dWxhcmVzX3BlcnNvbmFzIDwtIHJlYWRfY3N2KCJkYXRhL3BvdGVuY2lhci10cmFiYWpvLWxpc3RhZG8tdGl0dWxhcmVzLTIwMjItMTAtMDEuY3N2IikNCg0KIyBTZXhvDQpiYXNlX3NleG8gPC0gdGl0dWxhcmVzX3BlcnNvbmFzIHw+DQogICMgSW1wdXRvIHNleG8gYSBnw6luZXJvIGVuIGxvcyBjYXNvcyBlbiBsb3MgcXVlIG5vIGhheSB2YWxvcmVzDQogIG11dGF0ZShnZW5lcm8gPSBpZmVsc2UoaXMubmEoZ2VuZXJvKSwgc2V4bywgZ2VuZXJvKSwNCiAgICAgICAgIGdlbmVybyA9aWZlbHNlKGdlbmVybyA9PSAiRiIsICJNdWplciIsIGlmZWxzZShnZW5lcm8gPT0gIk0iLCAiVmFyw7NuIiwgZ2VuZXJvKSkpDQoNCg0KIyBNdWVzdHJvIGxhIGRpc3RyaWJ1Y2nDs24gZGVsIGfDqW5lcm8NCnRhYmxhX2dlbmVybyA8LSBiYXNlX3NleG8gfD4gDQogIHRhYnlsKGdlbmVybykgfD4gDQogIGFycmFuZ2UoZGVzYyhuKSkgICAlPiUNCiAgYWRvcm5fdG90YWxzIHw+IA0KICBtdXRhdGUocGVyY2VudCA9IHByaW50KHBhc3RlKHJvdW5kKHBlcmNlbnQqMTAwLDIpLCAiJSIpKSkgfD4gDQogIHJlbmFtZSgNCiAgICAiQ2FudGlkYWQiID0gbiwNCiAgICAiUG9yY2VudGFqZSIgPSBwZXJjZW50LA0KICAgICJHw6luZXJvIiA9IGdlbmVybw0KICApIHw+IA0KICBndCgpICU+JQ0KICB0YWJfaGVhZGVyKA0KICAgIHRpdGxlID0gIlRhYmxhIDI6IERpc3RyaWJ1Y2nDs24gZGVsIEfDqW5lcm8gZW4gQXJnZW50aW5hIiwNCiAgICBzdWJ0aXRsZSA9ICJEYXRvcyBkZSBnw6luZXJvIHkgZnJlY3VlbmNpYSINCiAgKSAlPiUNCiAgZm10X251bWJlcigNCiAgICBjb2x1bW5zID0gYyhDYW50aWRhZCksDQogICAgZGVjaW1hbHMgPSAwKSB8PiANCiAgZm10X251bWJlcigNCiAgICBjb2x1bW5zID0gYyhQb3JjZW50YWplKSwNCiAgICBkZWNpbWFscyA9IDIpDQoNCiNtdWVzdHJvDQp0YWJsYV9nZW5lcm8NCg0KIyBHdWFyZG8gdGFibGENCmd0c2F2ZSh0YWJsYV9nZW5lcm8sZmlsZW5hbWUgPSAiZ3JhZmljb3MvZGlzdHJpYnVjaW9uX2dlbmVyby5odG1sIikNCg0KIyBCb3Jybw0Kcm0odGFibGFfZ2VuZXJvKQ0KDQojUG9yY2VudGFqZSBkZSBkaXNjaWRlbmNpYXMNCnByaW50KHBhc3RlKDI4NjcrMTA4Nis3MjErNDM3LCAiY29ycmVzcG9uZGVuIGEgZGlzaWRlbmNpYXMuIEVzIGRlY2lyLCBlbCIsIChyb3VuZCgoKDI4NjcrMTA4Nis3MjErNDM3KS8xNTg2Njc2KSoxMDAsMikpLCIlIikpDQoNCg0KYGBgDQoNCiMjIyMgUHJvdmluY2lhIGRlIGJ1ZW5vcyBhaXJlcyANCg0KRGlzdHJpYnVjacOzbiBkZWwgZ8OpbmVybyBlbiBQQkENCmBgYHtyfQ0KZ2VuZXJvX3BiYSA8LSBiYXNlX3NleG8gfD4NCiAgZmlsdGVyKHByb3ZpbmNpYV9pZCA9PSAiMDYiKSAlPiUgDQogIHRhYnlsKGdlbmVybykgfD4gDQogIGFycmFuZ2UoZGVzYyhuKSkgICAlPiUNCiAgYWRvcm5fdG90YWxzIHw+IA0KICBtdXRhdGUocGVyY2VudCA9IHByaW50KHBhc3RlKHJvdW5kKHBlcmNlbnQqMTAwLDIpLCAiJSIpKSkgfD4gDQogIHJlbmFtZSgNCiAgICAiQ2FudGlkYWQiID0gbiwNCiAgICAiUG9yY2VudGFqZSIgPSBwZXJjZW50LA0KICAgICJHw6luZXJvIiA9IGdlbmVybw0KICApIHw+IA0KICBndCgpICU+JQ0KICB0YWJfaGVhZGVyKA0KICAgIHRpdGxlID0gIlRhYmxhIDM6IERpc3RyaWJ1Y2nDs24gZGVsIEfDqW5lcm8gZW4gQnVlbm9zIEFpcmVzIiwNCiAgICBzdWJ0aXRsZSA9ICJEYXRvcyBkZSBnw6luZXJvIHkgZnJlY3VlbmNpYSINCiAgKSAlPiUNCiAgZm10X251bWJlcigNCiAgICBjb2x1bW5zID0gYyhDYW50aWRhZCksDQogICAgZGVjaW1hbHMgPSAwKSB8PiANCiAgZm10X251bWJlcigNCiAgICBjb2x1bW5zID0gYyhQb3JjZW50YWplKSwNCiAgICBkZWNpbWFscyA9IDIpDQoNCmdlbmVyb19wYmENCiMgR3VhcmRvIHRhYmxhDQpndHNhdmUoZ2VuZXJvX3BiYSwgZmlsZW5hbWUgPSAiZ3JhZmljb3MvZGlzdHJpYnVjaW9uX2dlbmVyb19wYmEuaHRtbCIpDQpgYGANCg0KIyMjIFBpcsOhbWlkZSBkZW1vZ3LDoWZpY2Egey50YWJzZXR9DQoNCiMjIyMgQXJnZW50aW5hDQpgYGB7cn0NCg0KIyBDcmVvIGVsIHJhbmdvIGV0YXJpbyBwYXJhIGhhY2VyIGxhIHBpcmFtaWRlIHBvYmxhY2lvbmFsDQp0aXR1bGFyZXNfcGVyc29uYXMgPC0gdGl0dWxhcmVzX3BlcnNvbmFzIHw+IA0KICBmaWx0ZXIoIWlzLm5hKGVkYWQpKSB8PiANCiAgbXV0YXRlKHJhbmdvX2V0YXJpbyA9IGNhc2Vfd2hlbigNCiAgICAgIGVkYWQgPCAyNSB+ICIxOC0yNCIsDQogICAgICBlZGFkIDwgMzUgfiAiMjUtMzQiLA0KICAgICAgZWRhZCA8IDQ1IH4gIjM1LTQ0IiwNCiAgICAgIGVkYWQgPCA1NSB+ICI0NS01NCIsDQogICAgICBlZGFkIDwgNjUgfiAiNTUtNjQiLA0KICAgICAgZWRhZCA+PSA2NSB+ICI2NS03MiINCiAgICApLA0KICAgIHJhbmdvX2V0YXJpbyA9IGZhY3RvcigNCiAgICAgIHJhbmdvX2V0YXJpbywNCiAgICAgIGxldmVscyA9IGMoIjE4LTI0IiwNCiAgICAgICAgICAgICAgICAgIjI1LTM0IiwNCiAgICAgICAgICAgICAgICAgIjM1LTQ0IiwNCiAgICAgICAgICAgICAgICAgIjQ1LTU0IiwNCiAgICAgICAgICAgICAgICAgIjU1LTY0IiwNCiAgICAgICAgICAgICAgICAgIjY1LTcyIg0KICAgICAgICAgICAgICAgICApDQogICAgKQ0KICApDQoNCiNlc3F1aXNzZTo6ZXNxdWlzc2VyKHgpDQoNCg0KDQoNCiMgQXJtbyBsYSBwaXJhbWlkZQ0KDQpwaXJhbWlkZV9uYWMgPC0gdGl0dWxhcmVzX3BlcnNvbmFzIHw+DQogIGdyb3VwX2J5KHJhbmdvX2V0YXJpbywgc2V4bykgfD4NCiAgc3VtbWFyaXNlKE4gPSBuKCkpIHw+DQogIG11dGF0ZShwcm9wID0gcm91bmQoTi9zdW0oTikqMTAwLDIpLA0KICAgICAgICAgTiA9IGlmZWxzZShzZXhvID09ICJNIiwtTiwgTikpIHw+DQogIHJlbmFtZSgNCiAgICAiUmFuZ28gZXRhcmlvIiA9IHJhbmdvX2V0YXJpbywNCiAgICAic2V4byIgPSBzZXhvLA0KICAgICJDYW50aWRhZCBkZSB0aXR1bGFyZXMiID0gTg0KICApIHw+IA0KICBnZ3Bsb3QoKSArDQogIGFlcyh4ID0gYFJhbmdvIGV0YXJpb2AsIHkgPSBgQ2FudGlkYWQgZGUgdGl0dWxhcmVzYCwgZmlsbCA9IHNleG8pICsNCiAgZ2VvbV9jb2woKSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoRiA9ICIjYjIyOTg3IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNID0gIiMyOTg3YjIiKSkgKw0KIGxhYnMoeCA9ICIgIiwgeSA9ICIgIiwgdGl0bGUgPSAiR3LDoWZpY28gMTogVGl0dWxhcmVzIGRlbCBQb3RlbmNpYXIgVHJhYmFqbyBkZSBBcmdlbnRpbmEgMjAyMC0yMDIyIChlbiBtaWxlcykiLA0KICAgICAgI3N1YnRpdGxlID0gLA0KICAgICAgI2NhcHRpb24gPSAiRnVlbnRlOiBFbGFib3JhY2nDs24gcHJvcGlhIGVuIGJhc2UgYSBkYXRvcyBhYmllcnRvcyBkZWwgTWluaXN0ZXJpbyBkZSBEZXNhcnJvbGxvIFNvY2lhbCBkZSBsYSBOYWNpw7NuIiwgDQogZmlsbCA9ICJTZXhvIikgICsNCiAgY29vcmRfZmxpcCgpICsNCiAgZ2d0aGVtZXM6OnRoZW1lX3BhbmRlcigpKw0KICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAicmlnaHQiLA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2TCwgZmFjZSA9ICJib2xkIiwgaGp1c3QgPSAwLjUpLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE0TCwgZmFjZSA9ICJpdGFsaWMiLCBoanVzdCA9IDAuNSksDQogICAgcGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KHNpemUgPSA4TCksDQogICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSA5TCksDQogICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSA5TCksDQogICAgdGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID04TCwgZmFtaWx5ID0gInNlcmlmIikNCiAgKSArDQogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBjKCAtNTAwMDAsIC0xMDAwMDAsIC0xNTAwMDAsIC0yMDAwMDAsIC0yNTAwMDAsIC0zMDAwMDAsIC0zNTAwMDAsMCwgNTAwMDAsIDEwMDAwMCwgMTUwMDAwLCAyMDAwMDAsIDI1MDAwMCwgMzAwMDAwLCAzNTAwMDApLA0KICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYyg1MCwgMTAwLCAxNTAsIDIwMCwgMjUwLCAzMDAsIDM1MCwwLCA1MCwgMTAwLCAxNTAsIDIwMCwgMjUwLCAzMDAsIDM1MCksDQogICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBjKC0zNTAwMDAsMzUwMDAwKQ0KICAgICAgICAgICAgICAgICAgICApIA0KDQpnZ3NhdmUocGxvdCA9IHBpcmFtaWRlX25hYywgImdyYWZpY29zLzFfcGlyYW1pZGUtYXJnZW50aW5hLnBuZyIsIGhlaWdodCA9IDYsd2lkdGggPSA4KQ0KDQpwbG90bHlfbmFjIDwtIGdncGxvdGx5KHBpcmFtaWRlX25hYykNCg0KcGxvdGx5X25hYw0KDQojIGh0bWx3aWRnZXRzOjpzYXZlV2lkZ2V0KHBsb3RseV9uYWMsICJncmFmaWNvcy9odG1sLzFfcGlyYW1pZGUtYXJnZW50aW5hLmh0bWwiLCBzZWxmY29udGFpbmVkID0gVFJVRSkNCnJtKHBpcmFtaWRlX25hYykNCg0KI0d1YXJkbyBodG1sDQoNCmBgYA0KDQojIyMjIFByb3ZpbmNpYSBkZSBidWVub3MgYWlyZXMNCg0KYGBge3J9DQoNCiNQaXJhbWlkZSBkZSBsYSBwcm92aW5jaWEgZGUgYnVlbm9zIGFpcmVzDQp0aXR1bGFyZXNfcGJhIDwtIHRpdHVsYXJlc19wZXJzb25hcyB8Pg0KICBmaWx0ZXIocHJvdmluY2lhX2lkID09ICIwNiIpIHw+IA0KICBncm91cF9ieShyYW5nb19ldGFyaW8sIHNleG8pIHw+DQogIHN1bW1hcmlzZShOID0gbigpKSB8Pg0KICBtdXRhdGUoTiA9IGlmZWxzZShzZXhvID09ICJNIiwtTiwgTikpIHw+DQogIHJlbmFtZSgNCiAgICAiUmFuZ28gZXRhcmlvIiA9IHJhbmdvX2V0YXJpbywNCiAgICAic2V4byIgPSBzZXhvLA0KICAgICJDYW50aWRhZCBkZSB0aXR1bGFyZXMiID0gTg0KICApIA0KDQojIEFybW8gcGlyYW1pZGUgZGUgcHJvdmluY2lhIGRlIGJ1ZW5vcyBhaXJlcw0KcGlyYW1pZGFfcGJhIDwtIHRpdHVsYXJlc19wYmEgfD4gDQogIGdncGxvdCgpICsNCiAgYWVzKHggPSBgUmFuZ28gZXRhcmlvYCwgeSA9IGBDYW50aWRhZCBkZSB0aXR1bGFyZXNgLCBmaWxsID0gc2V4bykgKw0KICBnZW9tX2NvbCgpICsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYyhGID0gIiNiMjI5ODciLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE0gPSAiIzI5ODdiMiIpKSArDQogbGFicyh4ID0gIiAiLCB5ID0gIiAiLCB0aXRsZSA9ICJHcsOhZmljbyAyOiBUaXR1bGFyZXMgZGVsIFBvdGVuY2lhciBUcmFiYWpvIGRlIGxhIFByb3ZpbmNpYSBkZSBCdWVub3MgQWlyZXMgXG4gZW50cmUgZWwgYcOxbyAyMDIwIHkgMjAyMiAoZW4gbWlsZXMpIiwNCiAgICAgICN1YnRpdGxlID0gIlRpdHVsYXJlcyBkZWwgUG90ZW5jaWFyIFRyYWJham8gZW50cmUgZWwgYcOxbyAyMDIwIHkgMjAyMiAoZW4gbWlsZXMpIiwNCiAgICAgICNjYXB0aW9uID0gIkZ1ZW50ZTogRWxhYm9yYWNpw7NuIHByb3BpYSBlbiBiYXNlIGEgZGF0b3MgYWJpZXJ0b3MgZGVsIE1pbmlzdGVyaW8gZGUgRGVzYXJyb2xsbyBTb2NpYWwgZGUgbGEgTmFjacOzbiIsIA0KIGZpbGwgPSAiU2V4byIpICArDQogIGNvb3JkX2ZsaXAoKSArDQogIGdndGhlbWVzOjp0aGVtZV9wYW5kZXIoKSsNCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInJpZ2h0IiwNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNkwsIGZhY2UgPSAiYm9sZCIsIGhqdXN0ID0gMC41KSwNCiAgICBwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNEwsIGZhY2UgPSAiaXRhbGljIiwgaGp1c3QgPSAwLjUpLA0KICAgIHBsb3QuY2FwdGlvbiA9IGVsZW1lbnRfdGV4dChzaXplID0gOEwpLA0KICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gOUwpLA0KICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gOUwpLA0KICAgIHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9OEwsIGZhbWlseSA9ICJzZXJpZiIpDQogICkgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gYyggLTUwMDAwLCAtMTAwMDAwLCAtMTUwMDAwLCAtMjAwMDAwLCAwLCA1MDAwMCwgMTAwMDAwLCAxNTAwMDAsIDIwMDAwMCksDQogICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKDUwLCAxMDAsIDE1MCwgMjAwLCAwLCA1MCwgMTAwLCAxNTAsIDIwMCksDQogICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBjKC0yMDAwMDAsMjAwMDAwKQ0KICAgICAgICAgICAgICAgICAgICApIA0KZ2dzYXZlKHBsb3Q9IHBpcmFtaWRhX3BiYSwgImdyYWZpY29zLzJfcGlyYW1pZGUtYmFpcmVzLnBuZyIsIGhlaWdodCA9IDYsd2lkdGggPSA5KQ0KDQojIE11ZXN0cm8NCnBsb3RfcGJhIDwtIGdncGxvdGx5KHBpcmFtaWRhX3BiYSkNCnBsb3RfcGJhDQpybShwaXJhbWlkYV9wYmEscGxvdF9wYmEpDQoNCmBgYA0KDQojIyMgVGl0dWxhcmVzIHBvciBwcm92aW5jaWENCg0KYGBge3J9DQojTW9kaWZpY28gZXJyb3JlcyBkZSBub21icmVzDQp0aXR1bGFyZXNfcGVyc29uYXMgPC0gdGl0dWxhcmVzX3BlcnNvbmFzIHw+DQogIG11dGF0ZShwcm92aW5jaWEgPSBpZmVsc2UocHJvdmluY2lhID09ICJDw4PCs3Jkb2JhIiwgIkPDs3Jkb2JhIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UocHJvdmluY2lhID09ICJFbnRyZSBSw4PCrW9zIiwiRW50cmUgUsOtb3MiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UocHJvdmluY2lhID09ICJUdWN1bcODwqFuIiwgIlR1Y3Vtw6FuIiwgcHJvdmluY2lhKSkpKSANCg0KIyBDcmVvIHRhYmxhDQp0aXR1bGFyZXNfcGVyc29uYXMgfD4gDQogIHRhYnlsKHByb3ZpbmNpYSkgfD4gDQogIGFycmFuZ2UoZGVzYyhuKSkgJT4lDQogIGFkb3JuX3RvdGFscyB8PiANCiAgbXV0YXRlKHBlcmNlbnQgPSBwcmludChwYXN0ZShyb3VuZChwZXJjZW50KjEwMCwyKSwgIiUiKSkpIHw+IA0KICByZW5hbWUoDQogICAgIkNhbnRpZGFkIiA9IG4sDQogICAgIlBvcmNlbnRhamUiID0gcGVyY2VudCwNCiAgICAiUHJvdmluY2lhIiA9IHByb3ZpbmNpYQ0KICApIHw+IA0KICBndCgpICU+JQ0KICB0YWJfaGVhZGVyKA0KICAgIHRpdGxlID0gIkRpc3RyaWJ1Y2nDs24gcG9yIFByb3ZpbmNpYSIsDQogICAgc3VidGl0bGUgPSAiQ2FudGlkYWQgeSBQb3JjZW50YWplIGRlIHRpdHVsYXJlcyAiDQogICkgJT4lDQogIGZtdF9udW1iZXIoDQogICAgY29sdW1ucyA9IGMoQ2FudGlkYWQpLA0KICAgIGRlY2ltYWxzID0gMCkgfD4gDQogIGZtdF9udW1iZXIoDQogICAgY29sdW1ucyA9IGMoUG9yY2VudGFqZSksDQogICAgZGVjaW1hbHMgPSAyKQ0KDQoNCmBgYA0KDQoNCg0KIyMgRXZvbHVjacOzbiBkZSBsb3MgdGl0dWxhcmVzIC8gcGVybWFuZW5jaWEgZW4gZWwgcHJvZ3JhbWENCg0KDQpgYGB7cn0NCiN0aXR1bGFyZXMgcG9yIHBlcmlvZG8geSBqdXJpc2RpY2Npb24gKG11bmljaXBpbykNCnRvdGFsX3RpdHVsYXJlcyA8LSByZWFkX2NzdigiZGF0YS9wb3RlbmNpYXItdHJhYmFqby10aXR1bGFyZXMtYWN0aXZvcy0yMDIyLTEwLTAxLmNzdiIpDQojIFRpdHVsYXJlcyBwb3IgcGVyaW9kbyB5IGp1cmlzZGljY2nDs24gZ3LDoWZpY28gbGluZWFsDQoNCnRpdF9hcmdlbnRpbmEgPC0gdG90YWxfdGl0dWxhcmVzIHw+IA0KICBncm91cF9ieShwZXJpb2RvKSB8PiANCiAgc3VtbWFyaXNlKHRvdGFsX3RpdHVsYXJlcyA9IHN1bSh0aXR1bGFyZXMpLA0KICAgICAgICAgICAganVyaXNkaWNjaW9uID0gIkFyZ2VudGluYSIpIA0KDQpkZl90ZW5kZW5jaWEgPC0gdG90YWxfdGl0dWxhcmVzIHw+IA0KICBmaWx0ZXIocHJvdmluY2lhX2lkID09ICIwNiIpIHw+IA0KICBncm91cF9ieShwZXJpb2RvKSB8PiANCiAgc3VtbWFyaXNlKHRvdGFsX3RpdHVsYXJlcyA9IHN1bSh0aXR1bGFyZXMpLA0KICAgICAgICAgICAganVyaXNkaWNjaW9uID0gIkJ1ZW5vcyBBaXJlcyIpIHw+IA0KICBmdWxsX2pvaW4odGl0X2FyZ2VudGluYSkNCg0KDQpsaW5lYSA8LSBnZ3Bsb3QoZGZfdGVuZGVuY2lhKSArDQogIGFlcyh4ID0gcGVyaW9kbywgeSA9IHRvdGFsX3RpdHVsYXJlcywgY29sb3VyID0ganVyaXNkaWNjaW9uKSArDQogIGdlb21fbGluZSgpICsNCiAgZ2VvbV9wb2ludCgpICsNCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiU2V0MiIsDQogICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSAxKSArDQogIGxhYnMoDQogICAgeCA9ICIgIiwNCiAgICB5ID0gIiAiLA0KICAgIHRpdGxlID0gIkdyw6FmaWNvIDU6IEV2b2x1Y2nDs24gZGUgbGEgY2FudGlkYWQgZGUgdGl0dWxhcmVzIFxuIGRlbCB0b3RhbCBkZWwgcGHDrXMgeSBkZSBsYSBQcm92aW5jaWEgZGUgQnVlbm9zIEFpcmVzIiwNCiAgICAjY2FwdGlvbiA9ICJGdWVudGU6IEVsYWJvcmFjacOzbiBwcm9waWEgZW4gYmFzZSBhIGRhdG9zIGFiaWVydG9zIGRlbCBNRFNOIiwNCiAgICBjb2xvciA9ICJKdXJpc2RpY2Npw7NuIg0KICApICsNCiAgZ2d0aGVtZXM6OnRoZW1lX3BhbmRlcigpICsNCiAgdGhlbWUoDQogICAgbGVnZW5kLnBvc2l0aW9uID0gInRvcCIsDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTVMLCBmYWNlID0gImJvbGQiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGp1c3QgPSAwLjUpLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE0TCwgZmFjZSA9ICJpdGFsaWMiLCBoanVzdCA9IDAuNSksDQogICAgdGV4dCA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSAic2VyaWYiKQ0KICApICsNCiAgc2NhbGVfeF9kYXRlKGRhdGVfbGFiZWxzID0gIiViLSV5IiwgZGF0ZV9icmVha3MgPSAiMyBtb250aHMiKSArDQogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBjb21tYSkNCg0KZ2dzYXZlKHBsb3QgPSBsaW5lYSwgImdyYWZpY29zL2V2b2x1Y2lvbl9jYW50aWRhZF90aXR1bGFyZXMucG5nIikNCg0KZ2dwbG90bHkobGluZWEpDQpgYGANCg0KDQojIyBEaXN0cmlidWNpw7NuIGdlb2dyw6FmaWNhIA0KDQoNCg0KYGBge3J9DQpybShiYXNlX3NleG8sIGRmX3RlbmRlbmNpYSwgdGl0dWxhcmVzX3BiYSkNCg0KIyB1bHRpbW8gY29icm8gZGVsIHRpdHVsYXIgKHNlIHBvZHJpYSBtYXBlYXIpDQp0aXR1bGFyZXNfYW5vIDwtIHJlYWRfY3N2KCJkYXRhL3BvdGVuY2lhci10cmFiYWpvLXRpdHVsYXJlcy0yMDIyLTEwLTAxLmNzdiIpDQoNCg0KIyBBcm1vIGVsIGdyYWZpY28gZGUgdGl0dWxhcmVzIHRvdGFsZXMNCiANCm1hcGFfcHJvdmluY2lhIDwtIHRpdHVsYXJlc19hbm8gfD4NCiAgbXV0YXRlKGFubyA9IHllYXIocGVyaW9kbykpIHw+IA0KICBncm91cF9ieShwcm92aW5jaWFfaWQsIGFubykgfD4gDQogIHN1bW1hcmlzZSh0b3RfdGl0dWxhcmVzPSBzdW0odGl0dWxhcmVzKSkNCg0KI2FncnVwbyBwb3IgYcOxbw0KbWFwYV9wcm92aW5jaWEgPC0gbWFwYV9wcm92aW5jaWEgfD4NCiAgZ3JvdXBfYnkoYW5vKSB8PiANCiAgbXV0YXRlKHRvdF9wcm9wID0gKHRvdF90aXR1bGFyZXMvc3VtKHRvdF90aXR1bGFyZXMpKSoxMDApDQoNCiMgQXJtbyB1bmEgdGFibGEgDQoNCiMgVmVjdG9yZXMgY29uIG5vbWJyZXMgZGUgcHJvdmluY2lhcyB5IGPDs2RpZ29zDQpub21icmVzX3Byb3ZpbmNpYXMgPC0gYygNCiAgIkNpdWRhZCBBdXTDs25vbWEgZGUgQnVlbm9zIEFpcmVzIiwNCiAgIkJ1ZW5vcyBBaXJlcyIsDQogICJDYXRhbWFyY2EiLA0KICAiQ8OzcmRvYmEiLA0KICAiQ29ycmllbnRlcyIsDQogICJDaGFjbyIsDQogICJDaHVidXQiLA0KICAiRW50cmUgUsOtb3MiLA0KICAiRm9ybW9zYSIsDQogICJKdWp1eSIsDQogICJMYSBQYW1wYSIsDQogICJMYSBSaW9qYSIsDQogICJNZW5kb3phIiwNCiAgIk1pc2lvbmVzIiwNCiAgIk5ldXF1w6luIiwNCiAgIlLDrW8gTmVncm8iLA0KICAiU2FsdGEiLA0KICAiU2FuIEp1YW4iLA0KICAiU2FuIEx1aXMiLA0KICAiU2FudGEgQ3J1eiIsDQogICJTYW50YSBGZSIsDQogICJTYW50aWFnbyBkZWwgRXN0ZXJvIiwNCiAgIlR1Y3Vtw6FuIiwNCiAgIlRpZXJyYSBkZWwgRnVlZ28sIEFudMOhcnRpZGEgZSBJc2xhcyBkZWwgQXRsw6FudGljbyBTdXIiDQopDQoNCnByb3ZpbmNpYV9pZCA8LSBjKA0KICAiMDIiLCAiMDYiLCAiMTAiLCAiMTQiLCAiMTgiLCAiMjIiLCAiMjYiLCAiMzAiLCAiMzQiLCAiMzgiLCAiNDIiLCAiNDYiLA0KICAiNTAiLCAiNTQiLCAiNTgiLCAiNjIiLCAiNjYiLCAiNzAiLCAiNzQiLCAiNzgiLCAiODIiLCAiODYiLCAiOTAiLCAiOTQiDQopDQoNCiNVbm8NCnRhYmxhX2NvZCA8LSBkYXRhLmZyYW1lKHByb3ZpbmNpYV9pZCxub21icmVzX3Byb3ZpbmNpYXMpDQoNCm1hcGFfcHJvdmluY2lhIDwtIG1hcGFfcHJvdmluY2lhIHw+IA0KICBsZWZ0X2pvaW4odGFibGFfY29kKQ0KDQp0YWJsYSA8LSBtYXBhX3Byb3ZpbmNpYSB8PiANCiAgc2VsZWN0KC1wcm92aW5jaWFfaWQpIHw+IA0KICBwaXZvdF93aWRlcihuYW1lc19mcm9tID0gYW5vLCB2YWx1ZXNfZnJvbSA9IGModG90X3RpdHVsYXJlcywgdG90X3Byb3ApKSB8PiANCiAgcmVuYW1lKCJQcm92aW5jaWFzIj0gbm9tYnJlc19wcm92aW5jaWFzLA0KICAgICAgICAgIlBvcmNlbnRhamUgMjAyMCIgPSB0b3RfcHJvcF8yMDIwLA0KICAgICAgICAgIlBvcmNlbnRhamUgMjAyMSIgPSB0b3RfcHJvcF8yMDIxLA0KICAgICAgICAgIlBvcmNlbnRhamUgMjAyMiIgPSB0b3RfcHJvcF8yMDIyLA0KICAgICAgICAgIlRpdHVsYXJlcyAyMDIwIiA9IHRvdF90aXR1bGFyZXNfMjAyMCwNCiAgICAgICAgICJUaXR1bGFyZXMgMjAyMSIgPSB0b3RfdGl0dWxhcmVzXzIwMjEsDQogICAgICAgICAiVGl0dWxhcmVzIDIwMjIiID0gdG90X3RpdHVsYXJlc18yMDIyLCkgfD4gDQogIGFkb3JuX3RvdGFscygpIA0KDQp0YWJsYV9wb3JfcHJvdiA8LSB0YWJsYSB8Pg0KICBtdXRhdGUoYFBvcmNlbnRhamUgMjAyMGAgPSBwYXN0ZTAocm91bmQoYFBvcmNlbnRhamUgMjAyMGAsMiksIiUiKSwNCiAgICAgICAgIGBQb3JjZW50YWplIDIwMjFgID0gcGFzdGUwKHJvdW5kKGBQb3JjZW50YWplIDIwMjFgLDIpLCIlIiksDQogICAgICAgICBgUG9yY2VudGFqZSAyMDIyYCA9IHBhc3RlMChyb3VuZChgUG9yY2VudGFqZSAyMDIyYCwyKSwiJSIpKSAlPiUNCiAgI0VsaW1pbm8gbGFzIGNhbnRpZGFkZXMgcG9ycXVlIG5vIHRpZW5lIHNlbnRpZG8NCiAgI3NlbGVjdCgtYFRpdHVsYXJlcyAyMDIwYCwtYFRpdHVsYXJlcyAyMDIxYCwtYFRpdHVsYXJlcyAyMDIyYCkgJT4lIA0KICBndCgpJT4lDQogIHRhYl9oZWFkZXIoDQogICAgdGl0bGUgPSAiVGFibGEgNDogUG9yY2VudGFqZSBkZSB0aXR1bGFyZXMgcG9yIHByb3ZpbmNpYSB5IGHDsW8iLA0KICAgIHN1YnRpdGxlID0gIlNvYnJlIGVsIHRvdGFsIGRlIHRpdHVsYXJlcyINCiAgKSANCg0KdGFibGFfcG9yX3Byb3YNCiNUYWJsYSBwYXJhIHBvbmVyIGVuIGVsIHRyYWJham8gDQoNCndyaXRleGw6OndyaXRlX3hsc3godGFibGEsICJ0YWJsYXMvdGl0dWxhcmVzeHByb3ZpbmNpYXlhbm8ueGxzeCIpDQoNCmd0c2F2ZSh0YWJsYV9wb3JfcHJvdiwgZmlsZW5hbWUgPSAiZ3JhZmljb3MvdGFibGFfcG9yX3Byb3ZfYWJzb2x1dG9zLmh0bWwiKQ0KDQoNCmBgYA0KDQojIyMgTWFwYSBlbiBmdW5jacOzbiBkZWwgJSBwb2JsYWNpb25hbCB7LnRhYnNldH0NCg0KIyMjIyBBcmdlbnRpbmENCmBgYHtyfQ0KIyBUcmFpZ28gZWwgbWFwYSBkZSBhcmdlbnRpbmEgY29uIHByb3ZpbmNpYXMNCm1hcGFfYXJnIDwtIGdldF9nZW8oIkFSR0VOVElOQSIsIGxldmVsID0gInByb3ZpbmNpYSIpIHw+IA0KICByZW5hbWUoInByb3ZpbmNpYV9pZCIgPSBjb2Rwcm92X2NlbnNvKQ0KDQpjb2RpZ29zX21hcGEgPC0gc2hvd19hcmdfY29kZXModmlld2VyID0gRkFMU0UsIG5pdmVsID0gInByb3ZpbmNpYXMiKQ0KYGBgDQoNCg0KDQpgYGB7cn0NCiMgVHJhaWdvIGNzdiBxdWUgYXJtYW1vcyBlbiBsYSBjbGFzZSBkZSBzYWx1ZCBjb24gUg0KcG9ibGFjaW9uX2luZGVjIDwtIHJlYWRfY3N2KCJkYXRhL3Jlc3VsdGFkby5jc3YiKQ0KDQojIE1lIHRyYWlnbyBsb3MgdG90YWxlcyBwb2JsYWNpb25hbGVzDQpwb2JsYWNpb24gPC0gcG9ibGFjaW9uX2luZGVjIHw+IA0KICBmaWx0ZXIoIWp1cmkgPT0gIjAxIikgfD4gDQogICMgQcOxbyAyMDIyIHkgMjAyMCBwYXJhIHZlciBsYXMgZG9zIGZvdG9zDQogIGZpbHRlcihhbm8gPT0gMjAyMiB8IGFubyA9PSAyMDIwKSB8PiANCiAgIyBUb3RhbCBwb3Igc2VvDQogIGZpbHRlcihzZXhvX25vbWJyZSA9PSAiQW1ib3Mgc2V4b3MiKSB8Pg0KICBncm91cF9ieShhbm8sanVyaSwganVyaV9ub21icmUpIHw+IA0KICBzdW1tYXJpc2UocG9ibGFjaW9uID0gc3VtKHBvYmxhY2lvbikpIHw+IA0KICAjUGFyYSBwb2RlciBqb2luZWFyDQogIHJlbmFtZSgicHJvdmluY2lhX2lkIiA9IGp1cmkpDQoNCg0KDQojIEFybWFtb3MgbGEgcHJvcG9yY2nDs24gZGUgdGl0dWxhcmVzIHNvYnJlIGxhIHBvYmxhY2nDs24gcHJveWVjdGFkYQ0KbWFwYV9wcm92aW5jaWFfcG9iIDwtIG1hcGFfcHJvdmluY2lhIHw+DQogIGZpbHRlcihhbm8gJWluJSBjKDIwMjAsIDIwMjIpKSB8PiANCiAgbGVmdF9qb2luKHBvYmxhY2lvbikgfD4gDQogIGdyb3VwX2J5KGFubywgcHJvdmluY2lhX2lkKSB8PiANCiAgbXV0YXRlKHByb3BfcG9ubGFjaW9uYWwgPSAodG90X3RpdHVsYXJlcy9wb2JsYWNpb24pKQ0KDQp2YXJpYWNpb24gPC0gbWFwYV9wcm92aW5jaWFfcG9iIHw+IA0KICBtdXRhdGUocHJvcF9wb25sYWNpb25hbCoxMDApIHw+IA0KICBzZWxlY3QoYW5vLCBwcm9wX3BvbmxhY2lvbmFsLCBub21icmVzX3Byb3ZpbmNpYXMpIHw+IA0KICBwaXZvdF93aWRlcihuYW1lc19mcm9tID0gYW5vLCB2YWx1ZXNfZnJvbSA9IHByb3BfcG9ubGFjaW9uYWwpIHw+IA0KICBtdXRhdGUoY3JlY2ltaWVudG8gPSAoKGAyMDIyYC1gMjAyMGApL2AyMDIwYCkqMTAwKSB8PiANCiAgYXJyYW5nZShkZXNjKGNyZWNpbWllbnRvKSkNCg0KDQoNCm1hcGFfcHJvdmluY2lhX3BvYiRwcm9wX3BvbmxhY2lvbmFsIDwtIHJvdW5kKG1hcGFfcHJvdmluY2lhX3BvYiRwcm9wX3BvbmxhY2lvbmFsKjEwMCwyKQ0KDQojZ3VhcmRvIGV4Y2VsKSoNCndyaXRleGw6OndyaXRlX3hsc3gobWFwYV9wcm92aW5jaWFfcG9iLCAidGFibGFzL3RvdF90aXR1bGFyZXNfcHJvdmluY2lhX2luZGVjLnhsc3giKQ0KDQojVW5vIGNvbiBlbCBtYXBhIA0KbWFwYV9wb2IgPC0gbWFwYV9hcmcgfD4gDQogIGxlZnRfam9pbihtYXBhX3Byb3ZpbmNpYV9wb2IpDQoNCm1hcGFfbmFjIDwtIGdncGxvdChtYXBhX3BvYikgKw0KICBnZW9tX3NmKGFlcyhmaWxsID0gcHJvcF9wb25sYWNpb25hbCkpICsNCiAgZ2VvbV9zZl90ZXh0KA0KICAgIGFlcyhsYWJlbCA9IHBhc3RlMChwcm9wX3BvbmxhY2lvbmFsLCAiJSIpKSwNCiAgICBzaXplID0gMS44LA0KICAgIGZhY2UgPSAiYm9sZCIsDQogICAgY29sb3VyID0gImJsYWNrIiwNCiAgICBoanVzdCA9IDAuNQ0KICApICsNCiAgc2NhbGVfZmlsbF92aXJpZGlzX2Mob3B0aW9uID0gInBsYXNtYSIsDQogICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IC0xLA0KICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBwZXJjZW50X2Zvcm1hdChzY2FsZSA9IDEpKSArDQogIGdndGhlbWVzOjp0aGVtZV9wYW5kZXIoKSArDQogIGxhYnModGl0bGUgPSAiR3JhZmljbyAzOiBQb3JjZW50YWplIGRlIHRpdHVsYXJlcyBwb3IgcHJvdmluY2lhIiwNCiAgICAgICBzdWJ0aXRsZSA9ICJFbiBiYXNlIGEgcHJveWVjY2lvbmVzIGRlIElOREVDIiwNCiAgICAgICBmaWxsID0gIlBvcmNlbnRhamUiKSArDQogIHRoZW1lKA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2TCwgZmFjZSA9ICJib2xkIiwgaGp1c3QgPSAwLjUpLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE0TCwgZmFjZSA9ICJpdGFsaWMiLCBoanVzdCA9IDAuNSksDQogICAgdGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMSwgZmFtaWx5ID0gInNlcmlmIikNCiAgKSArDQogIHlsYWIoIiIpICsNCiAgeGxhYigiIikgKw0KICBmYWNldF93cmFwKHZhcnMoYW5vKSkgICAjIEHDsWFkZSBzY2FsZXMgPSAiZnJlZSIgcGFyYSBhanVzdGFyIGxhcyBlc2NhbGFzIGRlIGxvcyBlamVzIGVuIGNhZGEgcGFuZWwNCg0KDQpnZ3NhdmUocGxvdCA9IG1hcGFfbmFjLCAiZ3JhZmljb3MvbWFwYS1wb3JjLXRpdHVsYXJlcy14LXBvYmxhY2lvbi5wbmciKQ0KDQpwYXJhX3RhYmxhIDwtIG1hcGFfcG9iICU+JSANCiAgZ3JvdXBfYnkoYW5vKSB8PiANCiAgc3VtbWFyaXNlKFRpdHVsYXJlcyA9c3VtKHRvdF90aXR1bGFyZXMpLA0KICAgICAgICAgICAgUG9ibGFjaW9uID1zdW0ocG9ibGFjaW9uKSwNCiAgICAgICAgICAgIFBvcmNlbnRhamUgPSBwYXN0ZTAocm91bmQoKFRpdHVsYXJlcy9Qb2JsYWNpb24pKjEwMCwxKSwiJSIpKSAlPiUgDQogIHJlbmFtZSgiQcOxbyIgPSBhbm8pDQoNCnBhcmFfdGFibGEgPC0gYXMuZGF0YS5mcmFtZShwYXJhX3RhYmxhKSAlPiUgDQogIHNlbGVjdCgtZ2VvbWV0cnkpDQoNCnBhcmFfdGFibGEgJT4lIA0KICBndCgpICU+JQ0KICB0YWJfaGVhZGVyKA0KICAgIHRpdGxlID0gIlRhYmxhIDU6IFBvcmNlbnRhamUgZGUgdGl0dWxhcmVzIHBvciBhw7FvIiwNCiAgICBzdWJ0aXRsZSA9ICJFbiBiYXNlIGEgcHJveWVjY2lvbmVzIHBvYmxhY2lvbmFsZXMgZGUgSU5ERUMiDQogICkgDQoNCm1hcGFfbmFjX2ludGVyYWN0aXZvIDwtIGdncGxvdChtYXBhX3BvYikgKw0KICBnZW9tX3NmKGFlcyhmaWxsID0gcHJvcF9wb25sYWNpb25hbCwgdGV4dCA9IHBhc3RlKCJQcm92aW5jaWE6IiwganVyaV9ub21icmUsICI8YnI+UG9yY2VudGFqZToiLCBwcm9wX3BvbmxhY2lvbmFsLCAiJSIpKSkgKw0KICBzY2FsZV9maWxsX3ZpcmlkaXNfYyhvcHRpb24gPSAicGxhc21hIiwNCiAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gLTEsDQogICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IHBlcmNlbnRfZm9ybWF0KHNjYWxlID0gMSkpICsNCiAgZ2d0aGVtZXM6OnRoZW1lX3BhbmRlcigpICsNCiAgbGFicyh0aXRsZSA9ICJHcsOhZmljbyAzOiBQb3JjZW50YWplIGRlIHRpdHVsYXJlcyBwb3IgcHJvdmluY2lhIGVuIGJhc2UgYSBwcm95ZWNjaW9uZXMgZGUgSU5ERUMiLA0KICAgICAgIGZpbGwgPSAiUG9yY2VudGFqZSIpICsNCiAgdGhlbWUoDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTZMLCBmYWNlID0gImJvbGQiLCBoanVzdCA9IDAuNSksDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTRMLCBmYWNlID0gIml0YWxpYyIsIGhqdXN0ID0gMC41KSwNCiAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxKQ0KICApICsNCiAgeWxhYigiIikgKw0KICB4bGFiKCIiKSArDQogIGZhY2V0X3dyYXAodmFycyhhbm8pKQ0KDQpnZ3Bsb3RseShtYXBhX25hY19pbnRlcmFjdGl2bywgdG9vbHRpcCA9ICJ0ZXh0IikNCmBgYA0KDQoNCiMjIyMgQnVlbm9zIEFpcmVzDQoNCmBgYHtyfQ0KI3BhcmEgdmVyIGN1YWwgZXMgZWwgY29kaWdvDQojY29kaWdvc19tYXBhIDwtIHNob3dfYXJnX2NvZGVzKHZpZXdlciA9IEZBTFNFLCBuaXZlbCA9ICJwcm92aW5jaWFzIikNCiMgVHJhaWdvIGVsIG1hcGEgZGUgYXJnZW50aW5hIGNvbiBwcm92aW5jaWFzDQptYXBhX2JhIDwtIGdldF9nZW8oIkJVRU5PUyBBSVJFUyIsIGxldmVsID0gImRlcGFydGFtZW50byIpIA0KDQojVHJhaWdvIGxhIHByb3llY2Npb24gcG9ibGFjaW9uYWwgZGUgSU5ERUMgcXVlIGhpY2UgcGFyYSBsYSBtYXRlcmlhIGRlIHNhbHVkIGRlIFIgZGUgTUdBSUUNCg0KYmFfZGVwdG9faW5kZWMgPC0gcmVhZF9leGNlbCgiZGF0YS9wcm95ZWNjaW9uZXNfZGVwdG9faW5kZWMueGxzeCIpIHw+IA0KICBjbGVhbl9uYW1lcygpIHw+IA0KICAjIGZpbHRybyBwb3IgcHJvdmluY2lhIGRlIGJ1ZW5vcyBhaXJlcw0KICBmaWx0ZXIoanVyaV9jb2RpZ28gPT0gIjA2IikgfD4gDQogICMgbWUgcXVlZG8gY29uIGxhIGluZm8gZGUgYW1ib3Mgc2V4b3MNCiAgZmlsdGVyKHNleG9fbm9tYnJlID09ICJBbWJvcyBzZXhvcyIpIHw+IA0KICAjRmlsdHJvIGxvcyBhw7Fvcw0KICBmaWx0ZXIoYW5vICVpbiUgYygyMDIwLCAyMDIxLCAyMDIyKSkgfD4gDQogIHJlbmFtZSgicHJvdmluY2lhX2lkIiA9IGp1cmlfY29kaWdvKQ0KDQojIFRpdHVsYXJlcyANCnRpdHVsYXJlc19iYSA8LSB0aXR1bGFyZXNfYW5vIHw+IA0KICAjIEZpbHRybyBsb3MgZGUgYnVlbm9zIGFpcmVzDQogIGZpbHRlcihwcm92aW5jaWFfaWQgPT0gIjA2IikgfD4gDQogICMgQ3JlbyB1bmEgY29sdW1uYSBjb24gZWwgY29kaWdvIHNpbiBlbCAwNiBkZSBsYSBwcm92aW5jaWEgcGFyYSBwb2RlciBtYXRjaGVhciBjb24gZWwgY2Vuc28NCiAgbXV0YXRlKGRlcGFydGFtZW50b19jb2RpZ28gPSBzdWJzdHIoZGVwYXJ0YW1lbnRvX2lkLCAzLCBuY2hhcihkZXBhcnRhbWVudG9faWQpKSwNCiAgICAgICAgIGFubyA9IGFzLmNoYXJhY3Rlcih5ZWFyKHBlcmlvZG8pKSkgDQoNCiMgVW5vIGFtYmFzIGJhc2VzIHBhcmEgcG9kZXIgb3BlcmFyDQptYXBhX3BiYSA8LSBiYV9kZXB0b19pbmRlYyB8PiANCiAgbGVmdF9qb2luKHRpdHVsYXJlc19iYSB8PiANCiAgICAgICAgICAgICAgc2VsZWN0KC1jKG11bmljaXBpbywgbXVuaWNpcGlvX2lkLCANCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcGFydGFtZW50b19pZCwNCiAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNpYSwNCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcGFydGFtZW50bykpKSB8PiANCiAgbXV0YXRlKHBvcmNlbnRhamUgPSAodGl0dWxhcmVzL3BvYmxhY2lvbikqMTAwKSANCg0KYmFzZV9maW5hbF9wYmEgPC0gbWFwYV9iYSB8PiANCiAgbGVmdF9qb2luKG1hcGFfcGJhIHw+IA0KICBzZWxlY3QoZGVwYXJ0YW1lbnRvX25vbWJyZSxkZXBhcnRhbWVudG9fY29kaWdvLCBhbm8sIHBvcmNlbnRhamUpIHw+IA0KICAgIHJlbmFtZSgiY29kZGVwdG9fY2Vuc28iID0gZGVwYXJ0YW1lbnRvX2NvZGlnbykgfD4gDQogICAgZmlsdGVyKCEgYW5vID09ICIyMDIxIikpDQoNCg0KdGFibGFfcGJhIDwtIG1hcGFfcGJhIHw+IA0KICBzZWxlY3QoZGVwYXJ0YW1lbnRvX25vbWJyZSwgYW5vLCBwb2JsYWNpb24sIHRpdHVsYXJlcywgcG9yY2VudGFqZSkgfD4gDQogIHBpdm90X3dpZGVyKG5hbWVzX2Zyb20gPSBhbm8sIHZhbHVlc19mcm9tID0gYyhwb2JsYWNpb24sIHRpdHVsYXJlcywgcG9yY2VudGFqZSkpIA0KDQojRFQ6OmRhdGF0YWJsZSh0YWJsYV9wYmEpDQoNCndyaXRleGw6OndyaXRlX3hsc3godGFibGFfcGJhLCAidGFibGFzL3RhYmxhX3BiYS54bHN4IikNCmBgYA0KDQoNCmBgYHtyfQ0KDQptYXBhX2J1ZW5vc19haXJlcyA8LSBiYXNlX2ZpbmFsX3BiYSB8PiANCiAgZ2dwbG90KCkgKw0KICBnZW9tX3NmKGFlcyhmaWxsID0gcG9yY2VudGFqZSwgdGV4dCA9IHBhc3RlKCJEZXBhcnRhbWVudG86IiwgZGVwYXJ0YW1lbnRvX25vbWJyZSwgIjxicj5Qb3JjZW50YWplOiIsIHJvdW5kKHBvcmNlbnRhamUsMSksICIlIikpKSArDQogIHNjYWxlX2ZpbGxfdmlyaWRpc19jKG9wdGlvbiA9ICJwbGFzbWEiLA0KICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSAtMSwNCiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gcGVyY2VudF9mb3JtYXQoc2NhbGUgPSAxKSkgKw0KICBnZ3RoZW1lczo6dGhlbWVfcGFuZGVyKCkgKw0KICBsYWJzKHRpdGxlID0gIkdyw6FmaWNvIDQ6IFBvcmNlbnRhamUgZGUgdGl0dWxhcmVzIHBvciBkZXBhcnRhbWVudG8iLA0KICAgICAgIHN1YnRpdGxlID0gIkVuIGJhc2UgYSBwcm95ZWNjaW9uZXMgZGUgSU5ERUMiLA0KICAgICAgIGZpbGwgPSAiUG9yY2VudGFqZSIpICsNCiAgdGhlbWUoDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTZMLCBmYWNlID0gImJvbGQiLCBoanVzdCA9IDAuNSksDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTRMLCBmYWNlID0gIml0YWxpYyIsIGhqdXN0ID0gMC41KSwNCiAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxLCBmYW1pbHkgPSAic2VyaWYiKQ0KICApICsNCiAgeWxhYigiIikgKw0KICB4bGFiKCIiKSArDQogIGZhY2V0X3dyYXAodmFycyhhbm8pKSAgICMgQcOxYWRlIHNjYWxlcyA9ICJmcmVlIiBwYXJhIGFqdXN0YXIgbGFzIGVzY2FsYXMgZGUgbG9zIGVqZXMgZW4gY2FkYSBwYW5lbA0KDQojbWFwYV9idWVub3NfYWlyZXMNCg0KZ2dzYXZlKHBsb3QgPSBtYXBhX2J1ZW5vc19haXJlcywgImdyYWZpY29zL21hcGFfcG9yY190aXR1bGFyZXNfcG9ibGFjaW9uX2J1ZW5vc19haXJlcy5wbmciKQ0KDQojIExvcyBkYXRvcyB0b3RhbGVzIGRlIGxhIHByb3ZpbmNpYQ0KDQptYXBhX3BiYSAgJT4lDQogIGZpbHRlcighYW5vICA9PSAgMjAyMSkgJT4lIA0KICBncm91cF9ieShhbm8pIHw+IA0KICBzdW1tYXJpc2UoVGl0dWxhcmVzID1zdW0odGl0dWxhcmVzKSwNCiAgICAgICAgICAgIFBvYmxhY2lvbiA9c3VtKHBvYmxhY2lvbiksDQogICAgICAgICAgICBQb3JjZW50YWplID0gcGFzdGUwKHJvdW5kKChUaXR1bGFyZXMvUG9ibGFjaW9uKSoxMDAsMSksIiUiKSkgJT4lIA0KICByZW5hbWUoIkHDsW8iID0gYW5vKSAlPiUgDQogIGd0KCkgJT4lDQogIHRhYl9oZWFkZXIoDQogICAgdGl0bGUgPSAiVGFibGEgNjogUG9yY2VudGFqZSBkZSB0aXR1bGFyZXMgcG9yIGHDsW8gZW4gQnVlbm9zIEFpcmVzIiwNCiAgICBzdWJ0aXRsZSA9ICJFbiBiYXNlIGEgcHJveWVjY2lvbmVzIHBvYmxhY2lvbmFsZXMgZGUgSU5ERUMiDQogICkgDQoNCmdncGxvdGx5KG1hcGFfYnVlbm9zX2FpcmVzLCB0b29sdGlwID0gInRleHQiKQ0KYGBgDQoNCiMjIE1vbnRvcyANCg0KYGBge3J9DQojIEZpbHRybyBlbCBtb250byBwb3IgcG90ZW5jaWFyIHRyYWJham8NCm1vbnRvc192aWdlbnRlcyA8LSByZWFkX2NzdigiZGF0YS9tb250b3MtdHJhbnNmZXJlbmNpYXMtMjAyMy0wMS0wMS5jc3YiKSB8PiANCiAgZmlsdGVyKHByb2dyYW1hID09ICJQb3RlbmNpYXIgVHJhYmFqbyIpIHw+IA0KICBtdXRhdGUocGVyaW9kbyA9IGZvcm1hdC5EYXRlKHBlcmlvZG8sICIlbS8lWSIpKQ0KDQoNCiMgVHJhaWdvIGVsIElQQyBkZSBJTkRFQyBwYXJhIHBhc2FyIGxzIG1vbnRvcyBhIHByZWNpb3MgcmVhbGVzDQoNCmlwYyA8LSByZWFkX2V4Y2VsKCJkYXRhL3NoX2lwY18wOV8yMy54bHMiLCANCiAgICBzaGVldCA9ICJhbmFsaXNpc19wb3RlbmNpYXIiKSB8Pg0KICBjbGVhbl9uYW1lcygpIHw+IA0KICBtdXRhdGUocGVyaW9kbyA9IGZvcm1hdC5EYXRlKGZlY2hhLCAiJW0vJVkiKSkgfD4gDQogIHNlbGVjdCgtZmVjaGEpIHw+IA0KICByZW5hbWUoImlwYyIgPSBuaXZlbF9nZW5lcmFsKSB8PiANCiAgcmlnaHRfam9pbihtb250b3NfdmlnZW50ZXMpIHw+DQogIG11dGF0ZShpcGM9IGlwYy8xMDAsDQogICAgICAgICBtb250b19yZWFsID0gbW9udG8vaXBjLA0KICAgICAgICAgcGVyaW9kbyA9IGFzLkRhdGUocGFzdGUoIjAxLyIsIHBlcmlvZG8sIHNlcCA9ICIiKSwgZm9ybWF0ID0gIiVkLyVtLyVZIikpDQoNCg0KDQpgYGANCg0KYGBge3J9DQoNCiMgQXJtbyBncmFmaWNvIGRlbCBJUEMNCg0KbGluZWFfaXBjIDwtIGdncGxvdChpcGMpICsNCiAgYWVzKHggPSBwZXJpb2RvLCB5ID0gbW9udG9fcmVhbCkgKw0KICBnZW9tX2xpbmUoKSArDQogIGdlb21fcG9pbnQoKSArDQogIGxhYnMoDQogICAgeCA9ICIgIiwNCiAgICB5ID0gIiAiLA0KICAgIHRpdGxlID0gIkdyw6FmaWNvIDY6IEV2b2x1Y2nDs24gZGUgbG9zIG1vbnRvcyBkZWwgcHJvZ3JhbWEiLA0KICAgICNjYXB0aW9uID0gIkZ1ZW50ZTogRWxhYm9yYWNpw7NuIHByb3BpYSBlbiBiYXNlIGFsIElQQyBkZSBJTkRFQyIsDQogICkgKw0KICBnZ3RoZW1lczo6dGhlbWVfcGFuZGVyKCkgKw0KICB0aGVtZSgNCiAgICBsZWdlbmQucG9zaXRpb24gPSAidG9wIiwNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNUwsIGZhY2UgPSAiYm9sZCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoanVzdCA9IDAuNSksDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTRMLCBmYWNlID0gIml0YWxpYyIsIGhqdXN0ID0gMC41KSwNCiAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KGZhbWlseSA9ICJzZXJpZiIpDQogICkgKw0KICBzY2FsZV94X2RhdGUoZGF0ZV9sYWJlbHMgPSAiJW0tJXkiLCBkYXRlX2JyZWFrcyA9ICIzIG1vbnRocyIpICsNCiAgc2NhbGVfeV9jb250aW51b3VzKGxhYmVscyA9IGNvbW1hLCBsaW1pdHMgPSBjKDE1MDAsNDAwMCkpDQoNCg0KZ2dzYXZlKHBsb3QgPSBsaW5lYV9pcGMsICJncmFmaWNvcy9saW5lYV9pcGMucG5nIikNCg0KZ2dwbG90bHkobGluZWFfaXBjKQ0KYGBgDQoNCg0KDQpgYGB7cn0NCg0KaXBjICAlPiUgIyBDb252aWVydGUgJ3BlcmlvZG8nIGEgZm9ybWF0byBkZSBmZWNoYQ0KICBncm91cF9ieSgiQcOxbyIgPSBsdWJyaWRhdGU6OnllYXIocGVyaW9kbykpICU+JQ0KICBzdW1tYXJpc2UoDQogICAgIlByaW1lciBwZXJpb2RvIiA9IGZpcnN0KGZvcm1hdC5EYXRlKHBlcmlvZG8sIiViICVZIikpLA0KICAgICN1bHRpbW9fcGVyaW9kbyA9IG1heChwZXJpb2RvKSwNCiAgICAiUHJpbWVyIG1vbnRvIiA9IHBhc3RlMCgiIixmaXJzdChtb250bykpLA0KICAgICN1bHRpbW9fbW9udG8gPSBsYXN0KG1vbnRvKSwNCiAgICAiTW9udG8gZW4gcHJlY2lvcyByZWFsZXMiID0gcGFzdGUwKCIiLHJvdW5kKGZpcnN0KG1vbnRvX3JlYWwpLDIpKSwNCiAgICAjdWx0aW1vX21vbnRvX3JlYWwgPSBsYXN0KG1vbnRvX3JlYWwpDQogICkgJT4lIA0KICBndCgpICU+JQ0KICB0YWJfaGVhZGVyKA0KICAgIHRpdGxlID0gIk1vbnRvcyBwb3IgYcOxbyIsDQogICAgc3VidGl0bGUgPSAiUHJpbWVyIHBlcsOtb2RvIGRlIGNhZGEgYcOxbyINCiAgKSANCmBgYA0KDQo=